17460
21903
Ich habe eine HTML-Tabelle mit zum Beispiel 2 Zeilen (könnte mehr sein). Die mittlere Spalte kann bearbeitet werden und jede Zeile in der HTML-Tabelle ist eine andere Spalte in der Datenbank. Wenn ich Zeile 1 bearbeite und aktualisiere, hat die Seite Zeile 2 jetzt den gleichen Wert wie Zeile 1. Ich möchte dies nicht. Die Benutzer-ID (pk) ist für jede Zeile gleich. Die Dokumentation zum Erstellen eines neuen Datensatzes besagt, dass dies mit der Aktualisierung vorhandener Datensätze funktionieren würde, hilft mir aber nicht wirklich. Ich suche so viel Hilfe wie möglich.
Hier ist ein Bild von meinem Tisch:
Wie bringe ich jede Zeile dazu, ihren Wert beizubehalten und nicht alle anderen Zeilen zu aktualisieren?
Wenn ich beispielsweise die Spalte in Zeile 1 aktualisiere, möchte ich, dass nur die Spalte in Zeile 1 aktualisiert wird.
Bitte helfen Sie!
Hier ist mein Code:
HTML Quelltext:
    
    
Post.php Code
require ("config.php");
$ pk = $ _POST ['pk'];
$ name = $ _POST ['name'];
$ value = $ _POST ['value'];
if (! leer ($ value)) {
versuchen // Benutzerauswahl in der Datenbank speichern
{
$ stmt = $ db-> prepare ("UPDATE social_preferences SET fb_url =: fburl, tw_url =: twurl WHERE user_id =: userID AND");
$ stmt-> bindParam (": userID", $ pk, PDO :: PARAM_INT);
$ stmt-> bindParam (': twurl', $ value);
$ stmt-> bindParam (': fburl', $ value);
$ stmt-> execute ();
} catch (PDOException $ e) {echo 'Verbindung fehlgeschlagen:'. $ e-> getMessage (); }}
} else {
Echo 'Kein Wert ...';
}}
JS-Code:
$ (Dokument) .ready (Funktion () {
// Popup / Inline-Modus umschalten
$ .fn.editable.defaults.mode = 'inline';
$ ('. myeditable'). editierbar ({
URL: 'post.php',
ajaxOptions: {
Typ: 'Post',
},
Erfolg: Funktion (Daten, Konfiguration) {
if (data && data.id) {
// setze pk
$ (this) .editable ('option', 'pk', data.id);
}}
}}
});
});
Wenn ich die Registerkarte "Netzwerk" in den Chrome-Entwicklungstools überprüfe, wird Folgendes angezeigt:
Methode: POST
Status: 302 Vorübergehend verschoben 
OP spricht von Zeilen, aber tatsächlich sind es Spalten.
$ accept_names = array ('fb_url', 'tw_url');
if (in_array ($ _ POST ['name'], $ accept_names)) {
if (! empty ($ _ POST ['value'])) {
$ value = $ _POST ['value'];
$ id = $ _POST ['pk'];
Versuchen {
$ stmt = $ db-> prepare ('UPDATE social_preferences SET'. $ _POST ['name']. '=: value
WHERE user_id =: id ');
$ stmt-> bindParam (': id', $ id, PDO :: PARAM_INT);
$ stmt-> bindParam (': value', $ value);
$ stmt-> execute ();
}}
catch (PDOExeption $ e) {
echo json_encode (array ('status' => 'failed', 'msg' => $ e-> getMessage ()));
Ausfahrt;
}}
echo json_encode (Array ('id' => $ id, 'status' => 'oké', 'msg' => $ value));
}}
sonst {
echo jsonencode (array ('status' => 'failed', 'msg' => 'No value ....'));
}}
}}
sonst {
Header ($ _ SERVER ['SERVER_PROTOCOL']. '422 Nicht verarbeitbare Entität');
}}
11
|
Ich gehe davon aus, dass Sie Oracle SQL verwenden.
Fügen Sie alle Benutzer, die Sie aktualisieren möchten, in ein Array ein und verwenden Sie foreach, um sie zu durchlaufen.
Führen Sie Ihre Update-Anweisung für jeden aus.
Ich weiß nicht, ob es möglich ist, mehrere Updates in einer Anweisung auszuführen, aber ich denke nicht.
BEARBEITEN: Um sicherzustellen, dass nur eine Zeile betroffen ist, verwenden Sie nach Möglichkeit eindeutige Bezeichner wie Benutzer-IDs.
5
|
Sie müssen lediglich die Dokumentation der X-Tabelle hier befolgen
X-Tabelle
Ok, das ist ein Informationstag.
data-name = "Ihre Feldspalte in der Datenbank"
data-pk = "Ihr Primärschlüssel" in data pk können Sie mehrere PK eingeben.
Versuchen Sie jetzt dieses Beispiel.
HTML:

  

JS-Code: